/* Die Klasse stellt ein Regal in der Frontansicht dar.
 * 
 * Datei: Frontansicht.java    Autor:  Christian Plappert
 * Datum: 13.11.2011           Version: 0.1
 * 
 * Historie: 
 * 
 * 13.11.2011: v0.1    Klasse wurde angelegt.
 * TODO: Malt drueber
 */

package bibvis;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

import medienverwaltung.Regal;

public class Frontansicht extends JPanel
{
  private static final long serialVersionUID = 2304259979497061358L;
  private Regal regal;
  private int etage;
  private static int HOEHE, LAENGE;
  private int abschnitt;


  protected Frontansicht (Regal regal, int etage, int abschnitt)
  {
    setzeRegal (regal);
    setzeEtage (etage);
    setzeAbschnitt (abschnitt);
    berechneDimensionen ();
  }


  /**
   * Berechnet die maximale Laenge und Breite der einzelnen Abschnitte
   * des Regals, damit es nicht ausserhalb des Bereichs dargestellt
   * wird.
   */
  private void berechneDimensionen()
  {
    LAENGE = 300 / regal.gibAbschnitte ();
    HOEHE = 300 / regal.gibAnzahlEtagen ();
  }


  protected void paintComponent(Graphics g)
  {
    zeichneRechteck (g);
  }


  /**
   * Zeichnet ein zweidimensionales Array mit den zuvor berechneten
   * Laengen und Breiten und markiert anschliessend den gesuchten
   * Abschnitt.
   * 
   * @param g
   */
  private void zeichneRechteck(Graphics g)
  {

    for (int m = 0; m <= (regal.gibAbschnitte () * LAENGE); m = m
      + LAENGE)
    {
      for (int n = 0; n <= (regal.gibAnzahlEtagen () * HOEHE); n = n
	+ HOEHE)
      {
	g.drawRect (m, n, LAENGE, HOEHE);
      }
    }
    /* Markiere gesuchten Abschnitt */
    g.setColor (Color.RED);
    g.fillRect ( (abschnitt - 1) * LAENGE, (etage - 1) * HOEHE,
      (abschnitt - 1) + LAENGE, (etage - 1) + HOEHE);
  }


  private void setzeRegal(Regal regal)
  {
    this.regal = regal;
  }


  private void setzeEtage(int etage)
  {
    this.etage = etage;
  }


  private void setzeAbschnitt(int abschnitt)
  {
    this.abschnitt = abschnitt;
  }
}
